<?php
/**
 * Controller_Ajax_Album
 *
 * Класс Controller_Ajax_Album отвечает за обработку запросов связанных с альбомами
 *
 * @author Дмитрий Кузьма <kouzma.d@gmail.com>
 * @version 1.0
 */
class Controller_Ajax_Album extends Controller_Ajax {

	/**
	 * (non-PHPdoc)
	 * @see Controller_Ajax::actionSwitch()
	 */
	public function actionSwitch() {
	  Service_Debug::setDebug();
		switch ($this->arrRequest[2]) {
			case 'add_album_photo':
				$this->addAlbumPhoto();
				break;
			default: $this->setError(404);
 		}
	}

	/**
	 * Создание Фотографии для альбома
	 *
	 */
	public function addAlbumPhoto() {
	  Service_Debug::setDebug();
    $fileName = isset($_GET['name']) ? Service_Escape::absolutelyEscapeString($_GET['name']) : null;
    $albumId = isset($_GET['post_album_id']) ? intval($_GET['post_album_id']) : null;
    $albumId = intval($_GET['album_id']);
		$userId = intval($_GET['uid']);
    
    if (empty($albumId) || empty($fileName)) return $this->makeStandardError('Недостаточно данных');
    
    $objAlbum = new Album($albumId);
    if (!$objAlbum->id) return $this->makeStandardError('Альбома с таким ID не существует');
    $userId = $objAlbum->getField('ID_user');
    // Проверка прав
    $currentUserId = User_User::getId();
    if ($currentUserId != $userId) {
	    if (!$currentUserId) return $this->makeStandardError('Только зарегистрированные пользователи могут добавлять фотографии');
	    if ($userId) {
	    	$currentAdminLevel = SimpleAdministration::getAdminLevel();
	    	if (!$currentAdminLevel) return $this->makeStandardError('Нельзя загружать фотографии другим пользователям');
	    	if ($currentAdminLevel < 2) if (SimpleAdministration::getAdminLevel($userId))  return $this->makeStandardError('У Вас нет прав загружать фотографии другим администраторам');
	    }
	    else $userId = $currentUserId;
    }
    

	  $objImage = new Service_Image(array(
  		'resizeType' => 'save_propotion', 
  		'exception' => true
  	));
    $objImage->loadSrcAsRawPostData($fileName);
    
    // Ресайзим и сохраняем файлы на сервере
    $picFolder = 'essence/album/' . $albumId . '/';
    $objImage->setGoalFolder($picFolder);
    $objPhoto = new Photo();
    $objImage->setArrSizes($objPhoto->arrImageSizes);
    $objImage->save();
    
    // Получаем размеры и уничтожаем, ставший ненужным исходник
    $arrSizes = $objImage->getArrSizes();
    $objImage->deleteSrcFile();
    
    // Сохраняем в БД инфу по изображению и ссылки на загруженные файлы
    $objPhoto = new Photo();
    $objPhoto->setField('ID_album', $albumId);
    $objPhoto->setField('ID_user', $userId);
    $objPhoto->setField('photo_name', $fileName);
    $objPhoto->save();
    $objPhoto->saveAvatar($arrSizes);
    
		echo 'Done';
  }

}
?>